Mybatis 执行传入的sql语句

在项目开发中,需要根据具体业务逻辑动态拼接sql语句,那么我们可以将动态拼接好的sql语句传入mybatis中,这样便能最大限度将sql掌握在自己手里。

1.构造实体类(此处省略get、set方法)

package com.dnf.entity;

public class Staff {
    private long id;
    private String userName;
    private String password;
}

2.构造接口类

package com.dnf.dao;

import java.util.List;

import com.dnf.entity.Staff;

/**
 * @author Marco
 *
 */
public interface StaffDao {

    List<Staff> query4staff(String sql);
}

3.配置mapper文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.dnf.dao.StaffDao">
    <!-- 目的:为dao接口方法提供sql语句配置 -->
    <select id="query4staff" parameterType="String" resultType="Staff">
        ${value}
    </select>
</mapper>

以上三步配置好了对应的文件,下面进行测试

1.建立Base测试类将spring和junit整合

package com.dnf;

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * 配置spring和junit整合,junit启动时加载springIOC容器 spring-test,junit
 */
@RunWith(SpringJUnit4ClassRunner.class)
// 告诉junit spring配置文件
@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml" })
public class BaseTest {

}

2.创建StaffTest的测试类

package com.dnf.dao;

import java.util.List;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.dnf.BaseTest;
import com.dnf.entity.Staff;

public class StaffTest extends BaseTest{

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private StaffDao dao;   

    @Test
    public void query4staff(){
        String sql = "SELECT id,user_name,password FROM staffs";
        List<Staff> list = dao.query4staff(sql);
        for(Staff staff : list){
            logger.info(staff.toString());
        }
    }

}

执行junit测试
这里写图片描述

至此,配置完成。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
MyBatis 中,可以使用 `Mapper` 接口或者 `SqlSession` 直接执行多条 SQL 语句。 1. Mapper 接口方式 如果你使用的是 `Mapper` 接口方式,那么可以在 Mapper 接口中定义多个方法,每个方法对应一个 SQL 语句。然后在 Java 代码中调用这些方法即可执行多条 SQL 语句。 例如: ``` public interface UserMapper { void insertUser(User user); void updateUser(User user); void deleteUser(int userId); } ``` 在 Java 代码中,可以依次调用这三个方法来执行多条 SQL 语句: ``` UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.insertUser(user); mapper.updateUser(user); mapper.deleteUser(userId); ``` 2. SqlSession 方式 如果你使用的是 `SqlSession` 方式,那么可以调用 `SqlSession` 的 `selectList` 方法来执行多条 SQL 语句。在这个方法中,可以传入一个包含多条 SQL 语句的 XML 文件,并且在每条 SQL 语句之间使用分号分隔。 例如,假设你的 XML 文件名为 `multiSql.xml`,内容如下: ``` <sql> INSERT INTO user (name, age) VALUES ('John', 25); </sql> <sql> UPDATE user SET name = 'Peter' WHERE age = 25; </sql> ``` 那么在 Java 代码中,可以这样调用 `selectList` 方法来执行这两条 SQL 语句: ``` String statement = "multiSql"; sqlSession.selectList(statement); ``` 注意,在使用 `SqlSession` 执行多条 SQL 语句时,需要将 `ExecutorType` 设置为 `BATCH`,这样可以让 MyBatis 将多个 SQL 语句一起提交到数据库中,从而提高执行效率。例如: ``` SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值